package com.zhijian.medical.entity.vo.request;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.Valid;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 产品订单发货vo
 *
 * @author HCG
 * @version 1.0
 * @date 2022/3/13
 */
@Data
@Api(tags = "产品订单发货vo")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ProductSendOutVo {

    /**
     * 订单产品id
     */
    @ApiModelProperty(value = "订单产品id", hidden = true)
    private Long productId;

    /**
     * 厂家，合作机构id
     */
    @ApiModelProperty(value = "厂家，合作机构id")
    @NotNull(message = "厂家，合作机构id不能为空")
    private Long factoryId;

    /**
     * 产品名称
     */
    @ApiModelProperty("产品名称")
    @NotBlank(message = "产品名称不能为空")
    private String name;

    /**
     * 批次数组
     */
    @ApiModelProperty("批次数组")
    @NotNull(message = "批次数组不能为空")
    @Size(min = 1, message = "批次数组长度至少为1")
    @Valid
    private List<BatchVo> batchList;

    /**
     * 送货地址
     */
    @ApiModelProperty("送货地址")
    private String deliverAddress;

    /**
     * 接收人电话
     */
    @ApiModelProperty("接收人电话")
    private String receiveUserPhone;

    /**
     * 接收人
     */
    @ApiModelProperty("接收人")
    private String receiveUser;

    @Data
    @Api(tags = "产品订单发货批次vo")
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class BatchVo implements Serializable {

        /**
         * 批次号
         */
        @ApiModelProperty("批次号")
        @NotNull(message = "批次号不能为空")
        private String batchNumber;

        /**
         * 数量
         */
        @ApiModelProperty("数量")
        @NotNull(message = "数量不能为空")
        @Min(value = 1, message = "数量最小为1")
        private Integer quantity;

        /**
         * 生产日期
         */
        @ApiModelProperty("生产日期，格式为‘2022-01-01’")
        @NotBlank(message = "生产日期不能为空")
        private String produceDate;

        /**
         * 有效期
         */
        @ApiModelProperty("有效期")
        @NotBlank(message = "有效期不能为空")
        private String effective;

        /**
         * 是否是赠品，0：否，1：是
         */
        @ApiModelProperty("是否是赠品，0：否，1：是")
        @NotNull(message = "是否是赠品不能为空")
        private Byte weatherIsLargess;

        /**
         * 监测模块id
         */
        @ApiModelProperty("监测模块id")
        private Long monitorModuleId;

    }

}
